package com.jungle.task;

import com.jungle.task.executor.TaskExecutor;
import com.jungle.task.parameter.TaskParameter;
import com.jungle.task.result.TaskResult;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

/**
 * @author 李岩 at 2021/10/22.
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Task<T extends TaskParameter,V extends TaskResult> implements Serializable {

    /**
     * 任务类型
     */
    private TaskType taskType;

    /**
     * 任务是否完成
     */
    private Boolean complete;

    /**
     * 任务参数
     */
    private T parameter;

    private Map<TaskExecutor<T,V>,V> result;

    public Task(final TaskType taskType, final T parameter) {
        this.taskType = taskType;
        this.parameter = parameter;
        this.result = new HashMap<>();
    }
}
